package aqu.persistencia.Dao.CuentasPorPagar;

import aqu.persistencia.entity.*;
import aqu.persistencia.utilidad.HibernateCrud;
import aqu.persistencia.utilidad.HibernateUtil;
import aqu.persistencia.utilidad.MessagesController;
import java.util.HashMap;
import java.util.List;
import javassist.ClassMap;
import org.hibernate.HibernateException;
import org.hibernate.Session;

public class CxpTipoContribuyenteRetencionManager extends HibernateCrud {

private static final String buscar_porretencion = "CxpTipoContribuyenteRetencion.findBycxpCodigoRet";
private static final String buscar_portipoContribuyente = "CxpTipoContribuyenteRetencion.findBycxpCodigoTipCon";

    public CxpTipoContribuyenteRetencionManager() {
        TABLE = "CxpTipoContribuyenteRetencion";
        myClass = new CxpTipoContribuyenteRetencion();
    }

        public List<CxpTipoContribuyenteRetencion> buscarporRetencion(CxpRetencion ret) {
        HashMap hash = new HashMap();
        hash.put("cxpCodigoRet", ret);
        List<CxpTipoContribuyenteRetencion> resultList = buscarConNombreQuery(buscar_porretencion, hash);
        return resultList;
    }
        
        public List<CxpTipoContribuyenteRetencion> buscarTipoContribuyente(CxpTipoContribuyente tipCon, 
                CxpRetencion ret){
            HashMap hash = new HashMap();
            hash.put("CodTipoCon", tipCon);
            hash.put("CodRetencion", ret);
            List<CxpTipoContribuyenteRetencion> resultList = buscarConNombreQuery(buscar_portipoContribuyente, hash);
            return resultList;
        }
        
        
        public boolean createbyListTipoContribuyenteRetencion(List<CxpTipoContribuyenteRetencion> o) {
        // obtener la sesion actual
        Session session = HibernateUtil.getSessionFactory().openSession();
        try {
            // comenzar la transaccion
            session.beginTransaction();
            // almacenar la lista completa
            for (CxpTipoContribuyenteRetencion p : o) {
                session.save(p);
            }
            // confirmar transaccion
            session.getTransaction().commit();
        } catch (HibernateException e) {

            if (e.getCause() == null) {
                MessagesController.addInfo("Error al Crear: ", e.toString() + " Notificar al Administrador");
            } else {
                MessagesController.addInfo("Error al Crear: ", e.getCause().getMessage() + " Notificar al Administrador");
            }
            // deshacer transaccion

            this.rollback();
            session.getTransaction().rollback();
            return false;
        } finally {
            session.close();
        }
        return true;
    }
    
}
